In the following discussion, the term “ARCT” (ARC RISC Core) refers to a microprocessor-like central processing unit (CPU) architecture. While the method of present invention can be applied to other types of integrated circuits including, for example, application specific integrated circuits (ASICs) and field-programmable gate arrays (FPGAs), the microprocessor-like CPU design is chosen to more clearly illustrate the operation and capability of the invention.
As discussed in greater detail below, the present invention takes in one embodiment the form of a computer program having a synthesizable and customizable (i.e., “soft”) macro with a complementary suite of software tools for configuration and hardware-software co-design. This computer program employs the concept of a “system builder” to accomplish much of the desired functionality. In the present context, the ARC system builder refers to that portion or module of the computer program whereby the designer controls the generation of the subject CPU design. In one particular embodiment, the system builder directs the assembly of a series of predefined VHDL based designs along with design elements created by the user (also in VHDL, or whatever other description language is chosen) to produce a new, custom CPU specific to the user's specifications and needs. Hence, the system builder controls the creation and testing of HDL-based synthesizable CPUs. This approach further provides users with a great deal of flexibility in configuring the specific attributes of the resulting CPU.
The ARC System builder is embodied in a series of “scripts” that allows users to build customized ARC systems along with support files for both design simulation and synthesis. A script is more specifically a computer program, often written in a special computer programming language designed for the purpose. Such script languages include for example the “perl” and language commonly employed in UNIX based computer systems as a “scripting language.” There are other languages available to write scripts compatible with the present invention. It is noted that for the purposes of the present discussion, the term “scripts” refers to any series of logical instructions or actions of a computer program which are executed in a predefined order.
When executed, the ARC system builder script produces a series of questions, answered primarily through menus (as illustrated in greater detail below in the exemplary menu structure of Appendix I), the answers to which are used to build the VHDL simulator and synthesis files. An installation script allows several different ARC features to be selected, such as processor cache size and cache line length, size of external memory space to be cached, and clock period/skew. The script creates a working directory for the user, and further generates various VHDL files necessary to support further customized VHDL development.
The term “makefile” as used herein refers to the commonly used UNIX makefile function or similar function of a computer system well known to those of skill in the computer programming arts. The makefile function causes other programs or algorithms resident in the computer system to be executed in the specified order. In addition, it further specifies the names or locations of data files and other information necessary to the successful operation of the specified programs. It is noted, however, that the invention disclosed herein may utilize file structures other than the “makefile” type to produce the desired functionality.
Central to the method of the invention is the concept that one computer program may write another program, which is subsequently executed by the computer system. For example, one script may write a second script that is tailored by user input to perform a special task. The task is then performed when the second script is executed. This “dynamic scripting” is employed in various aspects of the invention, as further described herein.